#include <iostream>
#include <vector>

using namespace std;

int k, n;
bool matrix[101][101]; // 不需要初始化为 true，默认是 false
bool visited[101][101]; // 用于标记访问过的格子
int ha, la, hb, lb;
char temp;
int dirx[4] = {1, -1, 0, 0}, diry[4] = {0, 0, 1, -1};
bool flag;

void dfs(int x, int y) {
    if (x == hb && y == lb) {
        flag = true;
        return; // 找到目标，直接返回
    }

    for (int i = 0; i < 4; i++) {
        int newx = x + dirx[i];
        int newy = y + diry[i];
        if (newx >= 0 && newx < n && newy >= 0 && newy < n && !matrix[newx][newy] && !visited[newx][newy]) {
            visited[newx][newy] = true; // 标记为已访问
            dfs(newx, newy);
            if (flag) return; // 如果找到目标，直接返回
        }
    }
}

int main() {
    cin >> k;
    for (int i = 0; i < k; i++) {
        cin >> n;
        // 初始化矩阵和访问标记
        for (int r = 0; r < n; r++) {
            for (int l = 0; l < n; l++) {
                cin >> temp;
                matrix[r][l] = (temp == '#'); // # 为 true，. 为 false
                visited[r][l] = false; // 初始化访问标记
            }
        }
        cin >> ha >> la >> hb >> lb;

        // 检查起点和终点
        if (matrix[ha][la] || matrix[hb][lb]) {
            cout << "NO" << endl;
            continue;
        }

        flag = false;
        visited[ha][la] = true; // 标记起点为已访问
        dfs(ha, la);
        if (flag) {
            cout << "YES" << endl;
        } else {
            cout << "NO" << endl;
        }
    }
    return 0;
}